#!/usr/bin/qdroid
#codepage=Utf-8;

/*::
требует QDroid не ранее 2009.09.22

тест работы по станартными потоками ввода/вывода из скрипта
(встроенный объект StdStreamsGate)

используется для
	- тестирования работы с консолью (ввод данных руками и чтение ответа)
	- тестирования запуска из bash - "получение встроенного документа"
	- тестирования работы сценария запуска консольных программ (класс CHildProcess)
		(данный скрипт запускается как клиент)
*/


#======== var section ===========================
res0=loadlib_qd("qdlib_bytearray");


//------------------------------------------------------------------------
function main()
{
    StdStreamsGate.stdIn_received.connect(rcv_stdInData);
    StdStreamsGate.stdIn_StreamClosed.connect(rcv_stdInClosed);//получаем инфу  что входной поток закрыт.

    StdStreamsGate.open();
    StdStreamsGate.start();
    // надо бы придумать какой трюк для синхронной задержки работы скрипта до поступления аснхронных данных...
    StdStreamsGate.send_StdOut((new ByteArray).append(" [stdout] Enter smth..."));
    //StdStreamsGate.send_StdOut((new ByteArray).append(" [stderr] Enter smth..."));

}//main()

//------------------------------------------------------------------------
//--- обработчик данных из tdin------------------------------------
function rcv_stdInData( _data)
{
    //print (" stdInData =\n"+_data..toLatin1String());
    if (_data.left(4).toLatin1String()=="exit") 
     {
	exitScript();
     };
    StdStreamsGate.send_StdOut((new ByteArray).append("resived [["+_data.toLatin1String()+"]]\n"));
}

//------------------------------------------------------------------------
function rcv_stdInClosed()
{
	StdStreamsGate.send_StdOut((new ByteArray).append("StdIn Closed. Exiting...\n"));
	exitScript();
}

//------------------------------------------------------------------------
function exitScript()
{
	StdStreamsGate.stop();
	StdStreamsGate.close();
	exit();
}
//=========================================================================

main();
//exit();// не надо тут выходить...